package reflect;

import java.lang.reflect.Method;
import java.util.Scanner;

/**
 * JAVA 反射机制
 * 反射是java的动态机制，它允许我们在程序[运行期间]再确定要实例化的对象，调用的方法或操作
 * 的属性。该机制可以大大的提高代码的灵活度和可扩展性，但是也随之带来了较低的运行效率和更多
 * 的系统开销。因此程序不应当过度利用反射机制。
 */
public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException {
//        Class cls = String.class;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个类名");
        String className = scanner.nextLine();
        Class cls = Class.forName(className);

        String name = cls.getName();
        System.out.println(name);
        name=cls.getSimpleName();
        System.out.println(name);
        String pname = cls.getPackage().getName();
        System.out.println("包名："+pname);

        Method[] methods = cls.getMethods();
        for(Method method : methods){
            System.out.println(method.getName());
        }


    }
}
